#ifndef _EKU_UMEM_H_
#define _EKU_UMEM_H_

#include <inc/memlayout.h>

#define USPACE_START 0x00c00000
#define USPACE_END   0xee000000

#define UPAGE        0x00400000

#ifndef __ASSEMBLER__

// #include <inc/mmu.h>
#include <inc/types.h>


typedef int32_t umem_head_t;

physaddr_t va2pa(void *addr);

/* 初始化用户堆 */
int user_heap_init(void);
/* 初始化用户页面管理 */
int user_page_init(void);

/* 内存分配/释放 */
void *malloc(size_t size);
void *realloc(void *old_ptr, size_t size);
void free(void *ptr);

/* 页面地址分配/释放 */
void *palloc(void);
void pfree(void *addr);

#endif

#endif /* _EKU_UMEM_H_ */
